package org.jboss.windup.tooling; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; import java.rmi.server.UnicastRemoteObject; import java.util.Arrays; import java.util.logging.Logger; import javax.inject.Inject; /** * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> */ public class ToolingRMIServer { private static Logger LOG = Logger.getLogger(ToolingRMIServer.class.getName()); @Inject private ExecutionBuilder executionBuilder; public void startServer(int port, String version) { LOG.info("Registering RMI Server..."); try { executionBuilder.setVersion(version); Registry registry = LocateRegistry.getRegistry(port); try { String[] registered = registry.list(); if (Arrays.asList(registered).contains(ExecutionBuilder.LOOKUP_NAME)) registry.unbind(ExecutionBuilder.LOOKUP_NAME); try { UnicastRemoteObject.unexportObject(executionBuilder, true); } catch (Throwable t) { LOG.warning("Could not unexport due to: " + t.getMessage()); } } catch (Throwable t) { t.printStackTrace(); LOG.warning("Registry not already there, starting..."); registry = LocateRegistry.createRegistry(port); } ExecutionBuilder proxy = (ExecutionBuilder) UnicastRemoteObject.exportObject(executionBuilder, 0); registry.rebind(ExecutionBuilder.LOOKUP_NAME, proxy); LOG.info("Registered ExecutionBuilder at: " + registry); } catch (RemoteException e) { LOG.severe("Bootstrap error while registering ExecutionBuilder..."); e.printStackTrace(); } } }